<?php

class XQL_SimpleQuery extends XQL_Query
{
	protected $isResultSingleRow = FALSE;
	protected $isResultSingleField = FALSE;
	protected $isResultAutoincrement = FALSE;
	
	/**
	 * A callback-ek engedélyezettek.
	 * @var bool
	 */
	protected $enableCallbacks = TRUE;
	protected $executionMode = XQL_Query::MODE_RUN;

	/**
	 * A lekéréshez rendelt adatbázis tábla.
	 * @var XQL_Table
	 */
	protected $table;

	/**
	 * Bizonyos lekérésekhez használatos, a tábla kulcsmezőit tartalmazza.
	 * @var array
	 */
	protected $keys = array();
	protected $querySetName = '';

	public function __construct($querySetName, $connectionAlias='default')
	{
		$this->querySetName = $querySetName;
		$this->name = 'simple'.ucfirst($querySetName).'_Get';
		parent::__construct($connectionAlias);
	}

	/**
	 * Visszad egy példányt az osztályból.
	 *
	 * @return pSimpleQuery
	 */
	static public function create($querySetName, $connectionAlias='default')
	{
		return new pSimpleQuery($querySetName, $connectionAlias);
	} // static method

	/**
	 * Táblát rendel a lekéréshez.
	 *
	 * @param XQL_Table $table
	 * @return XQL_SimpleQuery
	 */
	public function bindTable(XQL_Table $table)
	{
		$this->table = $table;
		return $this;
	}

	/**
	 * Visszatér a lekéréshez rendelt tábla objektummal.
	 *
	 * @return XQL_Table
	 */
	public function getBoundTable()
	{
		return $this->table;
	}

	/**
	 * Hozzáad egy kulcsmezőt a lekéréshez.
	 *
	 * @param XQL_Field $field
	 * @return XQL_SimpleQuery
	 */
	public function addKeyField(XQL_Field $field)
	{
		$this->keys[] = $field;
		return $this;
	}

	/**
	 * Visszatér a lekéréshez adott kulcsmező objektumokkal.
	 *
	 * @return array of XQL_Field
	 */
	public function getAddedKeyFields()
	{
		return $this->keys;
	}

	/**
	 * Belső használatra.
	 *
	 * @param XQL_Table $table
	 * @param array $keys
	 */
	public function setup(XQL_Table $table, $keys)
	{
		$this->table = $table;
		$this->keys = $keys;
	}

	/**
	 * Beállítja az objektumhoz használt adatátalakító osztályt.
	 * 
	 * @param XQL_DataTransformation $transformer
	 */
	public function setupDataTransformer(XQL_DataTransformation $transformer)
	{
		$this->dataTransformation = $transformer;
	}

	/**
	 * A paraméterként kapott kulcsmezők listája alapján értékasszociált
	 * mezőlista formátum tömböt állít össze: a lista elemeinek azonosítói a
	 * résztvevő mezők nevei, értékei '%s' jelölők.
	 *
	 * @param array $keys
	 * @return array
	 */
	protected function keysToFormatArray()
	{
		$result = array();
		foreach ($this->keys as $key)
		{
			$result[(string)$key] = '%s';
		} // foreach
		return $result;
	}
}

?>